<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.9/vue.js"></script>

  <body>
    <!-- 
        vue   MVVM
    


     -->
    <div id="app">
      <h1>{{msg}}</h1>
      <p v-text="msg"></p>
      <button v-on:click="num+=1">点击加1</button>
      <button @click="add">点击加1</button>
      <button @click="add1(str,$event)">点击加1</button>

      <!-- 系统修饰键 -->
      <!-- ctrl -->
      <button v-on:click.ctrl="onClick">A</button>
      <!-- 
        点击 加ctrl触发事件
        或者
        ctrl加 Alt 或 Shift 被一同按下，并且点击时也会触发
        exact
       -->
      <button v-on:click.ctrl.exact="onClick">A</button>
      <p>{{num}}</p>
      <!-- 
            事件 
            ①v-on  简写@ 
            ②事件名=
            后面填写的内容既可以是methods中的属性名，也可以填写表达式
            ③例如add和add()的区别
            add()可以传参，但是若使用event必须将$event传入，否则undefined
            add可以不传，直接用


         -->
    </div>
    <script>
      const vm = new Vue({
        //配置对象
        el: "#app",
        data: {
          msg: "每逢佳节胖三斤！！！",
          num: 0,
          str: "wangzipeng"
        },
        methods: {
          add(e) {
            console.log(this);
            this.num++;
            console.log(e);
          },
          add1(str, e) {
            console.log(str);
            console.log(e);
          },
          onClick() {
            console.log("onclickTest");
          }
        }
      });
      // el  data methods computed watch
      // v-text v-html
      // v-once
      // v-bind  :
      // v-on    @
      // v-cloak
      // v-model   表单元素结合使用能获取表单数据
      // v-show v-if v-else
      // v-for
      console.log(vm);
      console.log(vm.$el);
      // el 指定的根元素
      console.log(vm.$data);
      // 在模板中使用的变量都必须有对应的初始值
      /* 
        str:''
        num:0
        beal:true/false
        arr:[]
        obj:{}
        err:null
        */
      // 事件修饰符  可以串联使用   顺序效果不同
      // 按键修饰符

      // 什么是事件冒泡 什么是浏览器的默认行为
      //   什么是事件委托？
      //ref
    </script>
  </body>
</html>
